package com.study.talk.data.remote

import com.study.common.annotation.Desc
import com.study.talk.data.model.GroupInfo
import com.study.talk.data.model.GroupUserInfo
import com.study.talk.data.model.resp.ResultResponse
import com.study.talk.data.model.vo.GroupUserInfoVo
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.DELETE
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Path

interface GroupApi {

    @Desc("获取群聊信息")
    @GET("/groupInfo/{groupId}")
    suspend fun getGroupInfo(@Path("groupId") groupId: Int): Response<ResultResponse<GroupInfo>>

    @Desc("获取群聊信息列表")
    @GET("/groupInfo/get/group/list/user/id")
    suspend fun getGroups() : Response<ResultResponse<List<GroupInfo>>>

    @Desc("根据群聊名称搜索群聊")
    @GET("/groupInfo/get/list/{keyword}")
    suspend fun searchGroups(@Path("keyword") keyword:String) : Response<ResultResponse<List<GroupInfo>>>

    @Desc("解散群聊")
    @GET("/groupInfo/update/disband/{groupId}")
    suspend fun disband(@Path("groupId") groupId: Int) : Response<ResultResponse<Boolean>>


    @Desc("获取群聊成员信息")
    @GET("/groupUserInfo/get/user/list/{groupId}")
    suspend fun getMembers(@Path("groupId") groupId: Int) : Response<ResultResponse<List<GroupUserInfo>>>

    @Desc("查询用户是否在群聊中")
    @POST("/groupUserInfo/query/has/member")
    suspend fun inGroup(@Body groupUser : GroupUserInfoVo) : Response<ResultResponse<Boolean>>

    @Desc("退出群聊")
    @DELETE("/groupUserInfo/exit/{groupId}")
    suspend fun exitGroup(@Path("groupId") groupId: Int) : Response<ResultResponse<Boolean>>
}